package com.ruoyi.smartcity.traffic.service;

import java.util.List;
import java.util.Map;

import com.ruoyi.smartcity.traffic.domain.TrafficFlow;
import com.ruoyi.smartcity.traffic.vo.EchartsOptionVO;

/**
 * 交通流量Service接口
 * 
 * @author ruoyi
 * @date 2025-02-24
 */
public interface ITrafficFlowService 
{
    /**
     * 查询交通流量
     * 
     * @param id 交通流量主键
     * @return 交通流量
     */
    public TrafficFlow selectTrafficFlowById(Long id);

    /**
     * 查询交通流量列表
     * 
     * @param trafficFlow 交通流量
     * @return 交通流量集合
     */
    public List<TrafficFlow> selectTrafficFlowList(TrafficFlow trafficFlow);

    /**
     * 新增交通流量
     * 
     * @param trafficFlow 交通流量
     * @return 结果
     */
    public int insertTrafficFlow(TrafficFlow trafficFlow);

    /**
     * 修改交通流量
     * 
     * @param trafficFlow 交通流量
     * @return 结果
     */
    public int updateTrafficFlow(TrafficFlow trafficFlow);

    /**
     * 批量删除交通流量
     * 
     * @param ids 需要删除的交通流量主键集合
     * @return 结果
     */
    public int deleteTrafficFlowByIds(Long[] ids);

    /**
     * 删除交通流量信息
     * 
     * @param id 交通流量主键
     * @return 结果
     */
    public int deleteTrafficFlowById(Long id);


    List<String> groupByRoadName();


    EchartsOptionVO analysis(String roadName);


    EchartsOptionVO top10();

    EchartsOptionVO analysisByTime();

    List<Map<String, Object>> analysisAccumulate();

    List<Map<String, Object>> averageSpeed();

    EchartsOptionVO travelTime();
}
